﻿using MyCrawler.Utilyties;
using System;
using System.Data.SqlClient;

namespace MyCrawler.Dals
{
    class SitesDal
    {
        internal string _cn;

        internal SitesDal()
        {
            _cn = UtilityCtr.GetConnectString();
        }

        /// <summary>
        /// cập nhật thời gian lần start lấy tin gần nhất
        /// </summary>
        /// <param name="id"></param>
        /// <param name="lastCrawler"></param>
        /// <returns></returns>
        internal int UpdateLastCrawler(int id, DateTime lastCrawler)
        {
            int i = 0;
            using (SqlConnection con = new SqlConnection(_cn))
            {
                try
                {
                    con.Open();

                    string q = "UPDATE [Sites] SET [LastCrawler] = '" + lastCrawler.ToString("yyyy-MM-dd hh:mm:ss") + "' WHERE [Id]='" + id + "'";

                    SqlCommand cmd = new SqlCommand(q, con);
                    i = Convert.ToInt32(cmd.ExecuteScalar());
                }
                catch (Exception ex) { throw ex; }
            }
            return i;
        }

        /// <summary>
        /// Cập nhật thời gian kết thúc lấy tin gần nhất
        /// </summary>
        /// <param name="id"></param>
        /// <param name="finished"></param>
        /// <returns></returns>
        internal int UpdateFinished(int id, DateTime finished)
        {
            int i = 0;
            using (SqlConnection con = new SqlConnection(_cn))
            {
                try
                {
                    con.Open();

                    string q = "UPDATE [Sites] SET [Finished] = '" + finished.ToString("yyyy-MM-dd hh:mm:ss") + "' WHERE [Id]='" + id + "'";

                    SqlCommand cmd = new SqlCommand(q, con);
                    i = Convert.ToInt32(cmd.ExecuteScalar());
                }
                catch (Exception ex) { throw ex; }
            }
            return i;
        }

        /// <summary>
        /// Lấy thời gian gần nhất đã chạy thu thập dữ liệu về
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        internal string GetLastCrawler(int id)
        {
            string s;
            using (SqlConnection con = new SqlConnection(_cn))
            {
                try
                {
                    con.Open();

                    string q = "Select [LastCrawler] from [Sites] WHERE [Id]='" + id + "'";

                    SqlCommand cmd = new SqlCommand(q, con);
                    s = Convert.ToString(cmd.ExecuteScalar());
                }
                catch { s = ""; }
            }

            return s;
        }

        /// <summary>
        /// Lấy thời gian kết thúc quét tin gần nhất
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        internal string GetFinished(int id)
        {
            string dt;
            using (SqlConnection con = new SqlConnection(_cn))
            {
                try
                {
                    con.Open();

                    string q = "Select [Finished] from [Sites] WHERE [Id]='" + id + "'";

                    SqlCommand cmd = new SqlCommand(q, con);
                    dt = Convert.ToString(cmd.ExecuteScalar());
                }
                catch { dt = ""; }
            }

            return dt;
        }
    }
}
